共用体类型[C语言]

共用体中的所有成员共用同一段内存(所有成员的起始地址都是一样的)


共用体中的所有成员共用同一段内存(所有成员的起始地址都是一样的)

格式:

union 共用体名

{

​ 成员列表;

};

注:

  1. 成员列表为定义该共用体的成员,成员定义的方式与普通变量的方式一样。
  2. 成员列表必须用一对花括号括起。
  3. 共用体名可以省略。

如:

1
2
3
4
5
6
7
8
union	data
{
int i;
//一维字符数组
char ch[10];
union data
{
int i;
//一维字符数组
char ch[10];
float s;
};
定义了一个名data的共用体类型,该类型有三个成员:i,ch,s

共用体变量的定义

  1. 先定义类型,在定义变量
  2. 定义类型的同时,定义变量
  3. 直接定义变量
1
2
3
4
5
6
union data
{
int i;
char ch[10];
union data
{
int i;
char ch[10];
float s;
};al

注:

由于共用体类型变量的所有成员都共用同一段内存,所以公用体类型变量所占的字节数等于该共用体类型中占用字节数最多的成员所占的字节数。

1
sizeof(al) = sizeof(al) = 10

共用体变量的引用

注:

  1. 不能整体引用共用体变量,只能引用其成员。

    引用的格式: 共用体变量名 . 成员名

  2. 同类型成员共享值

  3. 在内存中整形数据的二进制数低8位占用前面的一个字节,高8位占用后面一个字节。

  4. 共用体变量之间可以相互赋值,赋值后两个变量应使用同一成员。

  5. 共用体变量的地址与各成员的地址都相同的。

  6. 在定义共用体时,可以对其进行初始化,但只能有一个初值且必须用花括号将初值括起。相当于给第一个成员赋值。

  7. 共用体,结构体的成员均可以是共用体或结构体类型。

  8. 不能用共用体类型变量做为函数参数。

  9. 计算共用体占用字节数。